import axios from "axios";
// 引入进度条组件及其css文件
import nProgress from "nprogress";
import "nprogress/nprogress.css"
import store from "@/store";
// 创建一个实例
const request = axios.create({
  // 基础路径 直接用全局变量配置代理
  baseURL: process.env.VUE_APP_API,
  timeout: 10000,
})
// 给实例配置拦截器

// 请求拦截
request.interceptors.request.use(
  // 接受配置对象
  (config) => {
    nProgress.start()
    // 从VueX里拿到临时标识
    const userTempId = store.state.user.userTempId
    config.headers.userTempId = userTempId
    // 每次请求的时候都带上token
    const token = store.state.user.token;
    config.headers.token = token;
    return config
  },
  (error) => {
    nProgress.done()
    // 返回失败的promise实例
    return Promise.reject(error.message);
  }
)

// 响应拦截 
request.interceptors.response.use(
  //可以接受到请求返回的值
  (response) => {
    nProgress.done()
    // 拦截到数据需要返回出去 不然接受不到数据 对响应到的数据进行筛选
    if (response.data.code === 200) {
      return response.data.data
    } else {
      return Promise.reject({ message: response.data.message })
    }
  },
  (error) => {
    nProgress.done()
    //当响应失败,则处理失败情况,要返回一个失败的priomise实例
    return Promise.reject(error.message);
  }
)
// 暴漏出去
export default request;